{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "59276c91-38e8-4ddc-ac0f-0d30d409610b",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.model_selection import GridSearchCV #导入网格搜索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "dda3c0c1-aa04-447f-b376-b7f7f14a7b20",
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.read_csv(r\"C:\\数模经历\\data.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "bcec86e3-758f-4eb3-ab08-b1b9d978d3ab",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          714 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        204 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.7+ KB\n"
     ]
    }
   ],
   "source": [
    "data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "bf7dad43-8c60-41f3-9fec-c68ace4239c0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  \n",
       "4      0            373450   8.0500   NaN        S  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "b257aee6-4f29-481e-8eca-ad8cd72ed4b1",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.drop([\"Name\", \"Ticket\", \"Cabin\"], inplace=True, axis=1) #这些列由于缺失太多且对结果没有用，可以删除"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "250ef877-e3ea-49d9-b0cc-b7706a8e1a42",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass     Sex   Age  SibSp  Parch     Fare Embarked\n",
       "0            1         0       3    male  22.0      1      0   7.2500        S\n",
       "1            2         1       1  female  38.0      1      0  71.2833        C\n",
       "2            3         1       3  female  26.0      0      0   7.9250        S\n",
       "3            4         1       1  female  35.0      1      0  53.1000        S\n",
       "4            5         0       3    male  35.0      0      0   8.0500        S"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "3019a595-279b-4ffa-99a2-57f5b83cbf4d",
   "metadata": {},
   "outputs": [],
   "source": [
    "data[\"Age\"] = data[\"Age\"].fillna(data[\"Age\"].mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "8aa42ef3-e3d5-43a6-8757-c9a855f70347",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 9 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Sex          891 non-null    object \n",
      " 4   Age          891 non-null    float64\n",
      " 5   SibSp        891 non-null    int64  \n",
      " 6   Parch        891 non-null    int64  \n",
      " 7   Fare         891 non-null    float64\n",
      " 8   Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(2)\n",
      "memory usage: 62.8+ KB\n"
     ]
    }
   ],
   "source": [
    "data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "1753f928-aa1f-4654-8e97-068b950b898f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>26.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>887</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>male</td>\n",
       "      <td>27.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>13.0000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>888</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>19.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>889</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>23.4500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>890</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>26.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>30.0000</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>891</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>32.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>Q</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>889 rows × 9 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Survived  Pclass     Sex        Age  SibSp  Parch     Fare  \\\n",
       "0              1         0       3    male  22.000000      1      0   7.2500   \n",
       "1              2         1       1  female  38.000000      1      0  71.2833   \n",
       "2              3         1       3  female  26.000000      0      0   7.9250   \n",
       "3              4         1       1  female  35.000000      1      0  53.1000   \n",
       "4              5         0       3    male  35.000000      0      0   8.0500   \n",
       "..           ...       ...     ...     ...        ...    ...    ...      ...   \n",
       "886          887         0       2    male  27.000000      0      0  13.0000   \n",
       "887          888         1       1  female  19.000000      0      0  30.0000   \n",
       "888          889         0       3  female  29.699118      1      2  23.4500   \n",
       "889          890         1       1    male  26.000000      0      0  30.0000   \n",
       "890          891         0       3    male  32.000000      0      0   7.7500   \n",
       "\n",
       "    Embarked  \n",
       "0          S  \n",
       "1          C  \n",
       "2          S  \n",
       "3          S  \n",
       "4          S  \n",
       "..       ...  \n",
       "886        S  \n",
       "887        S  \n",
       "888        S  \n",
       "889        C  \n",
       "890        Q  \n",
       "\n",
       "[889 rows x 9 columns]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.dropna()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "55d90912-7cb7-4b91-8f27-6eb05539c3fc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass     Sex   Age  SibSp  Parch     Fare  \\\n",
       "0            1         0       3    male  22.0      1      0   7.2500   \n",
       "1            2         1       1  female  38.0      1      0  71.2833   \n",
       "2            3         1       3  female  26.0      0      0   7.9250   \n",
       "3            4         1       1  female  35.0      1      0  53.1000   \n",
       "4            5         0       3    male  35.0      0      0   8.0500   \n",
       "\n",
       "   Embarked  \n",
       "0         0  \n",
       "1         1  \n",
       "2         0  \n",
       "3         0  \n",
       "4         0  "
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "labels = data[\"Embarked\"].unique().tolist()\n",
    "data[\"Embarked\"] = data[\"Embarked\"].apply(lambda x: labels.index(x)) #将Embarked列改成以索引的数字\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "860ce046-a304-45e7-9bd2-9bbe2f792290",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  Sex   Age  SibSp  Parch     Fare  Embarked\n",
       "0            1         0       3    1  22.0      1      0   7.2500         0\n",
       "1            2         1       1    0  38.0      1      0  71.2833         1\n",
       "2            3         1       3    0  26.0      0      0   7.9250         0\n",
       "3            4         1       1    0  35.0      1      0  53.1000         0\n",
       "4            5         0       3    1  35.0      0      0   8.0500         0"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[\"Sex\"] = (data[\"Sex\"] == \"male\").astype(\"int\") #将sex列改成数字\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "6f353ea0-f44f-4d66-bd31-e6de8d3430f5",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = data.iloc[:, data.columns != \"Survived\"] #提取出x轴"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "86b1e339-cb02-4021-b0d6-0af8fd190042",
   "metadata": {},
   "outputs": [],
   "source": [
    "Y = data.iloc[:, data.columns == \"Survived\"] #提取出y轴"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "946d37f4-4367-4a90-8d6e-f6f3f398fa53",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>574</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>602</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.8958</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>197</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.7500</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>677</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>24.500000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>81</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>22.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>9.0000</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>618</th>\n",
       "      <td>657</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.8958</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>619</th>\n",
       "      <td>785</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>25.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.0500</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>620</th>\n",
       "      <td>161</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>44.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>16.1000</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>621</th>\n",
       "      <td>167</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>55.0000</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>622</th>\n",
       "      <td>541</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>36.000000</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>71.0000</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>623 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Pclass  Sex        Age  SibSp  Parch     Fare  Embarked\n",
       "0            574       3    0  29.699118      0      0   7.7500         2\n",
       "1            602       3    1  29.699118      0      0   7.8958         0\n",
       "2            197       3    1  29.699118      0      0   7.7500         2\n",
       "3            677       3    1  24.500000      0      0   8.0500         0\n",
       "4             81       3    1  22.000000      0      0   9.0000         0\n",
       "..           ...     ...  ...        ...    ...    ...      ...       ...\n",
       "618          657       3    1  29.699118      0      0   7.8958         0\n",
       "619          785       3    1  25.000000      0      0   7.0500         0\n",
       "620          161       3    1  44.000000      0      1  16.1000         0\n",
       "621          167       1    0  29.699118      0      1  55.0000         0\n",
       "622          541       1    0  36.000000      0      2  71.0000         0\n",
       "\n",
       "[623 rows x 8 columns]"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "Xtrain,Xtest,Ytrain,Ytest = train_test_split(X,Y,test_size=0.3)\n",
    "for i in [Xtrain,Xtest,Ytrain,Ytest]:\n",
    "    i.index = range(i.shape[0]) #重置索引，防止后面操作导致索引混乱\n",
    "Xtrain"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "47122730-0761-4fcd-a751-a7dc3697aec8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7686567164179104"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clf = DecisionTreeClassifier(random_state=10)\n",
    "clf = clf.fit(Xtrain,Ytrain)\n",
    "score = clf.score(Xtest,Ytest)\n",
    "score #查看模型得分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "0ab4a783-685a-4610-840b-bdf6334f4873",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7486267166042447"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_score\n",
    "clf = DecisionTreeClassifier(random_state=10)\n",
    "score = cross_val_score(clf,X,Y,cv=10).mean()\n",
    "score #使用交叉验证查看模型平均得分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "f0eb3259-391c-41e8-bbaf-dbad8ce302d7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.8170536828963796\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#查看训练前与训练后的得分情况，从而判断是训练集还是测试集过拟合\n",
    "tr = []\n",
    "te = []\n",
    "for i in range(10):\n",
    "    clf = DecisionTreeClassifier(random_state=10\n",
    "                                ,max_depth=i+1\n",
    "                                ,criterion=\"entropy\"\n",
    "                                )\n",
    "    clf = clf.fit(Xtrain, Ytrain)\n",
    "    score = clf.score(Xtest, Ytest)\n",
    "    Score = cross_val_score(clf, X, Y, cv=10).mean()\n",
    "    tr.append(score)\n",
    "    te.append(Score)\n",
    "print(max(te))\n",
    "plt.plot(range(1,11), tr, c=\"blue\", label=\"train\")\n",
    "plt.plot(range(1,11), te, c=\"red\", label=\"test\")\n",
    "plt.xticks(range(1,11))\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "932e6084-023a-47dc-b07a-8d703306bdc2",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "paramters = {\n",
    "    \"min_samples_leaf\":[*(range(1,21))]\n",
    "    ,\"min_impurity_decrease\":[*(np.linspace(0.0, 0.5, 25))]\n",
    "    \n",
    "}\n",
    "clf = DecisionTreeClassifier(random_state=10\n",
    "                            ,max_depth=3\n",
    "                            ,criterion=\"entropy\"\n",
    "                            )\n",
    "grid = GridSearchCV(clf, paramters,cv=10) #使用网格搜索判断最优参数\n",
    "grid = grid.fit(Xtrain, Ytrain)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "5d917e0a-35ef-4ec2-81f1-d007cc9da0e3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'min_impurity_decrease': 0.0, 'min_samples_leaf': 1}"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid.best_params_ #可以查看最优参数的参数值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "a46f0b25-13ec-48b1-8800-f010d270a97b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7895545314900152"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grid.best_score_"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "46479a2e-5594-4076-955a-aae1f756723c",
   "metadata": {},
   "source": [
    "**使用网格搜索后的得分，发现得分变少了，这也是网格搜索的缺点之一，因为不会删除参数，而是强行去寻找参数之间配合的最佳得分，反而可能会降低得分。所以使用网格搜索，往往是先自己分析了之后再进行专门探寻个别参数之间的最优值或者参数之间的搭配。**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "6b056619-73b6-4e87-b04d-9e0ed6b8e573",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8582089552238806"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#自我分析\n",
    "clf = DecisionTreeClassifier(\n",
    "                            random_state=10\n",
    "                            ,max_depth=3\n",
    "                            ,criterion=\"entropy\"\n",
    "                            # ,min_samples_leaf=1\n",
    "                            # ,min_impurity_decrease=0.0\n",
    "                            )\n",
    "clf = clf.fit(Xtrain,Ytrain)\n",
    "score = clf.score(Xtest,Ytest)\n",
    "score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2f9842be-778f-481d-9bfe-76cffee0e2b6",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
